package org.csu.jpetstore.service;

import com.sun.istack.internal.NotNull;
import org.csu.jpetstore.bo.AccountBO;
import org.csu.jpetstore.util.MyToken;

/**
 * @author huangzhangyan
 */
public interface AccountService {
    /**
     * 通过用户名获取用户
     *
     * @param username 用户名
     * @return AccountBO
     * @author huangzhangyan
     * @date: 2022/4/3 22:27
     */
    AccountBO getAccount(@NotNull String username);

    /**
     * 用户名是否存在,存在返回true,不存在返回false
     *
     * @param username 用户名
     * @return boolean
     * @author huangzhangyan
     * @date 2022/4/3 22:59
     */
    boolean isUsernameExist(@NotNull String username);

    /**
     * 登录(不带验证码) TODO TOKEN
     *
     * @param username 用户名
     * @param password 密码
     * @return MyToken
     * @author huangzhangyan
     * @date 2022/4/3 23:11
     */
    MyToken login(@NotNull String username, @NotNull String password);

//    /**
//     * 校验验证码
//     *
//     * @param codeKey   验证码的ID
//     * @param codeValue 验证码的值
//     * @return boolean
//     * @author huangzhangyan
//     * @date 2022/4/3 23:32
//     */
//    boolean verifyCode(@NotNull String codeKey, @NotNull String codeValue);
//
//    /**
//     * 获取验证码ID和图片
//     *
//     * @return Pair<String, Graphics> 验证码ID(不是验证码的值),验证码的图片
//     * @author huangzhangyan
//     * @date 2022/4/4 1:25
//     */
//    Pair<String, Graphics> getCodeKeyAndGraphics();

    /**
     * 新增用户
     *
     * @param accountBO 新增用户
     * @return boolean 用户名存在返回false
     * @author huangzhangyan
     * @date 2022/4/6 0:39
     */
    boolean insertAccount(AccountBO accountBO);

    /**
     * 修改账户
     *
     * @param accountBO 修改的账户信息
     * @author huangzhangyan
     * @date 2022/4/12 9:00
     */
    void modifyAccount(AccountBO accountBO);
}
